package com.xinsoft.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xinsoft.entity.dto.SysUserChangePasswordDTO;
import com.xinsoft.entity.dto.SysUserDTO;
import com.xinsoft.entity.dto.SysUserPageParam;
import com.xinsoft.entity.po.SysUser;
import com.xinsoft.entity.vo.SysUserVo;
import org.json.JSONObject;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
* @author xuhb
* @description 针对表【sys_user(用户表)】的数据库操作Service
* @createDate 2023-04-10 11:34:27
*/
public interface SysUserService extends IService<SysUser> {


    /**
     * 方法描述: [查询用户分页列表]
     * 初始作者: hsm
     * 创建时间:  2023
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [sysUserParam]
     * return SysUserVo>
     */
    IPage<SysUserVo> findPageListByParam(SysUserPageParam sysUserParam);

    /**
     * 方法描述: [添加用户]
     * 初始作者: hsm
     * 创建时间:  2023
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [sysUserDTO]
     * return com.socks.zhhc.core.system.user.entity.SysUser
     */
    SysUser addSysUser(SysUserDTO sysUserDTO);


    /**
     * 方法描述: [添加用户]
     * 初始作者: hsm
     * 创建时间:  2023
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [sysUserDTO]
     * return SysUser
     */
    SysUser editSysUser(SysUserDTO sysUserDTO);


    /**
     * 方法描述: [删除用户信息]
     * 初始作者: hsm
     * 创建时间:  2023
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [userName]
     * return java.lang.Boolean
     */
    void del(List<Integer> ids);

    /**
     * 方法描述: [获取用户]
     * 初始作者: hsm
     * 创建时间:  2023/04/20
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [sysUser]
     * return com.socks.zhhc.core.system.user.entity.SysUser
     */
    SysUserDTO getSysUser(Integer id);

    /**
     * 方法描述: [重置密码]</br>
     * 初始作者: hsm<br/>
     * 创建日期: 2023/04/20
     * 开始版本: 1.0.0<br/>
     * =================================================<br/>
     * 修改记录：<br/>
     * 修改作者 日期 修改内容<br/>
     * ================================================<br/>
     *
     * @param sysUserChangePasswordDTO
     * @return void
     */
    void resetPassWord(SysUserChangePasswordDTO sysUserChangePasswordDTO);

    /**
     * 方法描述: [启用]</br>
     * 初始作者: hsm<br/>
     * 创建日期: 2023/04/20
     * 开始版本: 1.0.0<br/>
     * =================================================<br/>
     * 修改记录：<br/>
     * 修改作者 日期 修改内容<br/>
     * ================================================<br/>
     *
     * @param id
     * @return void
     */
    void enable(Integer id);

    /**
     * 方法描述: [停用]</br>
     * 初始作者: hsm<br/>
     * 创建日期: 2023/04/20
     * 开始版本: 1.0.0<br/>
     * =================================================<br/>
     * 修改记录：<br/>
     * 修改作者 日期 修改内容<br/>
     * ================================================<br/>
     *
     * @param id
     * @return void
     */
    void disable(Integer id);

    /**
     * 方法描述: [导入]</br>
     * 初始作者: hsm<br/>
     * 创建日期: 2023/04/20
     * 开始版本: 1.0.0<br/>
     * =================================================<br/>
     * 修改记录：<br/>
     * 修改作者 日期 修改内容<br/>
     * ================================================<br/>
     *
     * @param multipartFile
     * @return void
     */
    void importData(MultipartFile multipartFile) throws IOException;


    /**
     * 方法描述: [根据用户名获取用户]
     * 初始作者: hsm
     * 创建时间:  2023/04/20
     * 开始版本:
     * =================================================
     * 修改记录：
     * 修改作者 日期 修改内容>
     * ================================================
     * param [username] 用户名
     * return SysUser
     */
    SysUser getSysUserByUsername(String username);

    /**
     * 方法描述: [导入]</br>
     * 初始作者: hsm<br/>
     * 创建日期: 2023/04/20
     * 开始版本: 1.0.0<br/>
     * =================================================<br/>
     * 修改记录：<br/>
     * 修改作者 日期 修改内容<br/>
     * ================================================<br/>
     *
     * @param multipartFile
     * @return void
     */
    JSONObject importExcel(MultipartFile multipartFile) throws IOException;


    /**
     * 方法描述: [列表不分页]</br>
     * 初始作者: hsm<br/>
     * 创建日期: 2023/04/20
     * 开始版本: 1.0.0<br/>
     * =================================================<br/>
     * 修改记录：<br/>
     * 修改作者 日期 修改内容<br/>
     * ================================================<br/>
     *
     * @param param
     * @return void
     */
     List<SysUserDTO> findListByParam(SysUserPageParam param) ;

    void insertOrUpdateBatch(List<SysUser> sysUserList);
}

